package proyecto.dao;

import java.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import proyecto.modelo.Cliente;

public class ClienteDAO {

    public Cliente insertar(Cliente cl) {
        String query = "INSERT INTO cliente(idtelefono,codigocliente,nombrecliente,direccioncliente,ciudadcliente,idempresa,idclase)" + "VALUES (?,?,?,?,?,?,?)";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setInt(1, cl.getIdTelefono());
            stmt.setString(2, cl.getCodigo());
            stmt.setString(3, cl.getNombre());
            stmt.setString(4, cl.getDireccion());
            stmt.setString(5, cl.getCiudad());
            stmt.setInt(6, cl.getIdEmpresa());
            stmt.setInt(7, cl.getIdClase());
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo insertar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        return cl;
    }

    public int buscarPorNumero(int idnum) {
        int idcliente = 0;
        String query = "SELECT idcliente FROM cliente WHERE idtelefono=" + idnum;
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            if (rs.next()) {
                idcliente = rs.getInt("idcliente");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
        return idcliente;
    }

    public Collection<Cliente> buscarAll(String nombre) {
        String query = "SELECT idcliente,codigocliente,nombrecliente,direccioncliente FROM cliente WHERE (nombrecliente like '%" + nombre + "%') OR (direccioncliente like '%" + nombre + "%')";
        Collection<Cliente> c = new ArrayList<Cliente>();
        try {
            Connection con = ConexionBD.obtenerConexion();
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            while (rs.next()) {
                Cliente em = new Cliente();
                em.setIdCliente(rs.getInt("idcliente"));
                em.setCodigo(rs.getString("codigocliente"));
                em.setNombre(rs.getString("nombrecliente"));
                em.setDireccion(rs.getString("direccioncliente"));
                c.add(em);
            }
            rs.close();
            stmt.close();
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return c;
    }

    public void modificar(int idcliente, String codigo) {
        String query = "UPDATE cliente SET nombrecliente = ? WHERE idcliente = ?";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setString(1, codigo);
            stmt.setInt(2, idcliente);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo modificar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
    }

    public void eliminar(int idcliente) {
        String query = "DELETE FROM cliente WHERE idcliente = ?";
        System.err.println(query);
        Connection con = null;
        PreparedStatement stmt = null;
        try {
            con = ConexionBD.obtenerConexion();
            stmt = con.prepareStatement(query);
            stmt.setInt(1, idcliente);
            int i = stmt.executeUpdate();
            if (i != 1) {
                throw new SQLException("No se pudo eliminar");
            }
            stmt.close();
            con.close();
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
    }
}
